package com.ucar.training.dao.impl;

import com.ucar.training.dao.IUserDao;
import com.ucar.training.domain.User;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author XiongMM
 * @date 2019/7/18 16:57
 * @description dao层的具体实现，往往这个地方操作数据库mysql、SQL server 、oracle、mongodb...
 */
public class UserDaoImpl implements IUserDao {

    /**
     * 模拟一个List集合 当数据库
     */
    private static final Map<String, User> USER_MAP = new HashMap<>();

    @Override
    public User find(String userName, String userPwd) {
        //如果集合为空（数据库为空），则说明没有数据
        if (USER_MAP.size() == 0) {
            return null;
        }
        //循环每个用户，比对，找到我们想要的用户
        for (Map.Entry<String, User> entry : USER_MAP.entrySet()) {
            String key = entry.getKey();
            User user = entry.getValue();
            if (key.equals(userName) && user.getPassword().equals(userPwd)) {
                return user;
            }
        }
        //没找到，返回null
        return null;
    }

    @Override
    public void save(User user) {
        USER_MAP.put(user.getUserName(), user);
    }

    @Override
    public User select(String userName) {
        return USER_MAP.get(userName);
    }

    @Override
    public List<User> getAllUser() {
        return new ArrayList<>(USER_MAP.values());
    }

    @Override
    public boolean delOne(String userName) {
        User user = USER_MAP.remove(userName);
        return user != null;
    }

    @Override
    public void modifyUser(User user) {
        USER_MAP.put(user.getUserName(),user);
    }
}
